// File: jmcomic-core/src/main/java/dev/jukomu/common/postman/proxy/FixUrlPostman.java
package dev.jukomu.common.postman.proxy;

import dev.jukomu.common.postman.Postman;
import dev.jukomu.common.util.net.IResponse;

import java.util.Map;
import java.util.Objects;

/**
 * 对应Python的FixUrlPostman，一个Postman代理，用于固定请求URL。
 * 如果get/post方法不传入URL，则使用固定的URL。
 */
public class FixUrlPostman extends PostmanProxy {

    private final String fixUrl;

    /**
     * 构造函数。
     *
     * @param postman 被代理的Postman实例。
     * @param fixUrl  固定的URL。
     */
    public FixUrlPostman(Postman postman, String fixUrl) {
        super(postman);
        this.fixUrl = Objects.requireNonNull(fixUrl, "Fixed URL cannot be null.");
    }

    @Override
    public IResponse get(String url, Map<String, Object> kwargs) throws Exception {
        return super.get(url != null ? url : fixUrl, kwargs);
    }

    @Override
    public IResponse post(String url, Map<String, Object> kwargs) throws Exception {
        return super.post(url != null ? url : fixUrl, kwargs);
    }

    @Override
    public Postman copy() {
        return new FixUrlPostman(postman.copy(), fixUrl);
    }

    // --- Postman接口的withXxx方法，返回此代理类自身实例 ---
    // 这些方法在PostmanProxy中已经转发到了内部Postman，所以这里无需重复。
    // 但是，为了确保链式调用返回的是FixUrlPostman类型，可以重写，但通常不需要，
    // 因为返回Postman接口类型已经足够。
}